package sessions;

import java.util.ArrayList;

import javax.ejb.Remote;

import entities.Utente;

@Remote
public interface LoginSystemRemote {

	/**
	 * Inserisce nel database un Utente
	 * 
	 * @param nome
	 *            Nome dell'utente
	 * @param cognome
	 *            Cognome dell'utente
	 * @return Identificativo dell'utente appena inserito nel sistema, -1 se
	 *         l'inserimento � fallito
	 */
	public int insertUser(String email, String nome, String cognome,
			String password, String data, String numTelefono,
			String NumCellulare);

	/**
	 * cerca un utente dal DB
	 * 
	 * @param email
	 *            l'email dell'utente da cercare
	 * @param password
	 *            la password dell'utente da cercare
	 * @return l'utente corrispondente
	 */
	public Utente getUtente(String email, String password);
	
	/**
	 * restituisce l'utente associato all'id passato
	 * @param id id utente da ricercare
	 * @return l'utente con l'id associato
	 */
	public Utente getUserByID(int id);

	/**
	 * ritorna tutti gli utenti cercati per nome e/o cognome
	 * 
	 * @param name
	 *            il nome dell'utente da cercare
	 * @param surname
	 *            il cognome dell'utente da cercare
	 * @return la lista degli utenti trovati
	 */
	public ArrayList<Utente> getUsers(String name, String surname);

	/**
	 * restituisce gli utenti con una determinata abilita
	 * @param idAbility l'abilita da ricercare
	 * @return la lista di utenti che sanno svolgere l'attivita
	 */
	public ArrayList<Utente> getUsersForAbility(int idAbility);
	
	/**
	 * ritorna tutti gli utenti del DB
	 * 
	 * @return la lista di tutti gli utenti
	 */
	public ArrayList<Utente> getAllUsers();
	
	/**
	 * elimina l'utente associato all'id passato
	 * 
	 * @param id
	 *            id utente da eliminare
	 * @return true se l'utente � stato eliminato correttamente, false altrimenti
	 */
	public boolean eraseUser(int id);
	
	/**
	 * restituisce il tipo dell'utente che si è loggato null se l'utente o la password non esistono
	 * @param id Identificativo dell'utente
	 * @param password Password associata all'identificativo
	 * @return Tipo 
	 */
	public String getLoginType(int id, String password);
}
